package com.smart4j.framework.proxy.cglib;

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

/**
 * description: 使用 CGLIB 实现动态代理
 * @version v1.0
 * @author w
 * @date 2018年9月3日下午11:12:55
 */
public class CglibProxy implements MethodInterceptor{
	
	@SuppressWarnings("unchecked")
	public <T> T getProxy(Class<T> clzz){
		return (T) Enhancer.create(clzz, this);
	}

	@Override
	public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
		System.out.println("前方注意~老司机来了，请速让道。。 ");
		Object result = proxy.invokeSuper(obj, args);
		System.out.println("老司机已通过前方 over ..");
		return result;
	}
}
